function Mom=SubFun_Result2Mom(Result)

%% Setup
List_Shock  =   {'Eps_Eta_M_dom','Eps_Eta_Y_H','Eps_Eta_M_ext'};

%% Generate the Consumption Dispersion
IRF_ConsDist=   struct();

for ii_SH=1:length(List_Shock)
    SH                  =   List_Shock{ii_SH};
    IRF_ConsDist.(SH)   =   IRFAdd_ConsDist(Result.PP,...
                                            Result.SS,...
                                            Result.MODEL,...
                                            Result.EquJac.HH_Aux,...
                                            length(Result.IRF.(SH).C),...
                                            Result.IRF.(SH));
end

%% Generate the Moments
% 1. Aggregate
StatName_Agg=   {'Consumption','Inflation','ExchangeRate'};
Mom_Agg     =   struct();
for ii=1:length(List_Shock)
    SH              =   List_Shock{ii};
    [~,MaxIdx]      =   max(abs(Result.IRF.(SH).C));
    TempIrf_ExRate  =   cumsum(Result.IRF.(SH).dE);
    Mom_Agg.(SH)    =   [Result.IRF.(SH).C(MaxIdx); ...
                         Result.IRF.(SH).Pir(MaxIdx)*4;...
                         TempIrf_ExRate(MaxIdx)]*100;
end

% 2. Distribution
StatName_Dist=  {'Std','GapByRI','GapByFI','GapByNA'};
Mom_Dist    =   struct();

for ii=1:length(List_Shock)
    SH              =   List_Shock{ii};
    [~,MaxIdx]      =   max(abs(Result.IRF.(SH).C));
    TempIrf_AggStat =   Result.IRF.(SH).AggStat;
    TempIrf_ConsDisp=   IRF_ConsDist.(SH).Disp;
    Mom_Dist.(SH)   =   [TempIrf_ConsDisp(1,MaxIdx);...
                         TempIrf_AggStat(3,MaxIdx)-TempIrf_AggStat(4,MaxIdx);
                         TempIrf_AggStat(1,MaxIdx)-TempIrf_AggStat(2,MaxIdx);
                         TempIrf_AggStat(5,MaxIdx)-TempIrf_AggStat(6,MaxIdx)]*100;
    Mom_Dist.(SH)   =   Mom_Dist.(SH);
end

%% Final Results
Mom     =   struct('StatNames',{cat(2,StatName_Agg,StatName_Dist)'});
for ii=1:length(List_Shock)
    SH              =   List_Shock{ii};
    Mom.Stat.(SH)   =   [Mom_Agg.(SH);Mom_Dist.(SH)];
end